package com.allwees.bs.c.module.ops.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.allwees.bs.c.module.user.constant.EUserCouponQueryType;
import com.allwees.bs.c.module.user.dto.UserCouponDTO;
import com.allwees.bs.c.module.user.entity.UserCouponEntity;
import com.allwees.bs.core.model.coupon.constant.ECouponUseType;
import com.allwees.bs.core.modelbase.page.PageParams;
import com.allwees.bs.core.modelbase.page.PaginateDTO;

import java.util.List;

public interface UserCouponService extends IService<UserCouponEntity> {
    /**
     * @param userCouponUuid
     * @return
     */
    UserCouponEntity use(String userCouponUuid);

    /**
     * 首次完成一个周期签到/普通完成一个周期签到
     * @param userUuid
     * @return
     */
    UserCouponEntity signIn(String userUuid, ECouponUseType couponUseType);

    /**
     * 受邀者注册赠送邀请人优惠券
     * @param userUuid
     */
    void inviteeRegistered(String userUuid);

    /**
     * 新注册用户手动领取
     * @param userUuid
     */
    UserCouponEntity newRegisteredUserGet(String userUuid);
    /**
     *
     * @param userUuid
     * @param couponUuid
     * @return
     */
    UserCouponEntity receive(String userUuid,String couponUuid);

    /**
     *
     * @param userUuid
     * @param promoCode
     * @return
     */
    UserCouponEntity receiveAndUse(String userUuid, String promoCode);

    /**
     * 明细
     *
     * @param uuid
     * @return
     */
    UserCouponEntity load(String uuid);

    /**
     * @param userUuid
     * @return
     */
    List<UserCouponDTO> getCanUseCoupons(String userUuid);

    /**
     *
     * @param userUuid
     * @param queryType
     * @param pageParams
     * @return
     */
    PaginateDTO<UserCouponDTO> page(String userUuid, EUserCouponQueryType queryType, PageParams pageParams);

    /**
     *
     * @param userCouponUuid
     */
    void completed(String userCouponUuid);

    /**
     * 查询注册优惠券
     * @param userUuid
     * @return
     */
    UserCouponEntity getRegisteredCoupon(String userUuid);
}
